﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography;
using System.Text;

namespace Link_eLab.Helper
{
    public static class TextHelper
    {
        #region 生成当前时间戳

        /// <summary>
        /// 生成当前时间戳
        /// </summary>
        /// <returns>JSON结果集</returns>
        public static string GetTimeStamp()
        {
            TimeSpan ts = DateTime.UtcNow - new DateTime(1970, 1, 1, 0, 0, 0, 0);
            return Convert.ToInt64(ts.TotalSeconds).ToString();
        }

        #endregion

        #region 生成随机字符串

        ///<summary>
        /// 生成随机字符串
        ///</summary>
        ///<param name="length">目标字符串的长度</param>
        ///<param name="useNum">是否包含数字，true=包含，默认为包含</param>
        ///<param name="useLow">是否包含小写字母，true=包含，默认为包含</param>
        ///<param name="useUpp">是否包含大写字母，true=包含，默认为包含</param>
        ///<param name="useSpe">是否包含特殊字符，true=包含，默认为不包含</param>
        ///<param name="custom">要包含的自定义字符，直接输入要包含的字符列表</param>
        ///<returns>指定长度的随机字符串</returns>
        public static string GetRnd(int length, bool useNum, bool useLow, bool useUpp, bool useSpe, string custom)
        {
            byte[] b = new byte[4];
            new System.Security.Cryptography.RNGCryptoServiceProvider().GetBytes(b);
            Random r = new Random(BitConverter.ToInt32(b, 0));
            string s = null, str = custom;
            if (useNum == true) { str += "0123456789"; }
            if (useLow == true) { str += "abcdefghijklmnopqrstuvwxyz"; }
            //if (useUpp == true) { str += "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; }
            if (useUpp == true) { str += "ABCDEFGHJKLMNPQRSTUVWXYZ"; }
            if (useSpe == true) { str += "!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~"; }
            for (int i = 0; i < length; i++)
            {
                s += str.Substring(r.Next(0, str.Length - 1), 1);
            }
            return s;
        }

        #endregion

        #region 对字符串进行 SHA1 加密

        /// <summary>
        /// 对字符串进行 SHA1 加密
        /// </summary>
        /// <param name="str"></param>
        /// <returns>JSON结果集</returns>
        public static string SHA1_Encryption(string str)
        {
            // 创建SHA1加密算法对象
            SHA1 sha1 = SHA1.Create();
            // 将原始密码转换为字节数组
            byte[] originalPwd = Encoding.UTF8.GetBytes(str);
            // 执行加密
            byte[] encryPwd = sha1.ComputeHash(originalPwd);
            // 将加密后的字节数组转换为大写字符串
            return string.Join("", encryPwd.Select(b => string.Format("{0:x2}", b)).ToArray()).ToUpper();
        }

        #endregion

    }
}
